<html>
	<head>
		<title>Документация по основным классам wr2</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

		<style>
            h1,h2,h3 {
                margin-top:3px;
                margin-bottom:0px;
            }
		</style>

	</head>
	<body>
        <h1>Содержание</h1>

		<div id="contents" style="margin-left:20px">
            <a href="#wsbase">WSBase</a><br />
            <a href="#wskernel">WSKernel</a><br />
            <a href="#wsmodule">WSModule</a><br />
            <a href="#wsresult">WSResult</a><br />
            <a href="#wsjob">WSJob</a><br />
            <a href="#wsoption">WSOption</a><br />
            <a href="#wsthread">WSThread</a><br />
		</div>

        <h1>WSBase</h1>
		<div id="wsbase" style="margin-left:20px">
            <p>
                Базовый клас wr2. Отвечает за загрузку выбранного модуля.
                    <h2>Методы</h2>
                    <p>
                    <h3>__my_import(self, name)</h3>
                    <p style="margin-left:20px">Принимает имя модуля, возвращая имя его класса.</p>

                    <h3>loadModule(self, modulename)</h3>
                    <p style="margin-left:20px">Принимает имя модуля, возвращая его объект.</p>
                </p>
            </p>
            <a href="#contents">Содержание</a>
		</div>

        <h1>WSKernel</h1>
        <div id="wskernel" style="margin-left:20px">

            <p>
                Класс ядра системы. Следит за рабочими потоками модулей.
                <h2>Методы</h2>
                <p>
                    <h3>createThreads(self, threads)</h3>
                    <p style="margin-left:20px">Метод принимает список потоков модуля (в виде объектов, наследников <a href="#wsthread">WSThread</a>),
                        сохраняя их для дальнейшей работы и поочерёдно запуская каждый из них вызовом метода start().
                    </p>

                    <h3>finished(self)</h3>
                    <p style="margin-left:20px">Метод возвращает True если все потоки текущего модуля закончили работу.
                        Закончившим считается поток со значением False в свойстве running.
                    </p>
                </p>
            </p>
        </div>

        <h1>WSmodule</h1>
        <div id="wsmodule" style="margin-left:20px">

            <p>
                Класс-основа для модулей wr2
                <h2>Свойства</h2>
                <p>
                    <h3>log_path = None</h3>
                    <p style="margin-left:20px">Путь к логу модуля. Обязательно должен быть объявлен наследником WSModule.
                    Туда будет записан результат его работы.</p>

                    <h3>log_width = 60</h3>
                    <p style="margin-left:20px">Ширина одной строки логов (для удобочитаемости).</p>

                    <h3>description = ""</h3>
                    <p style="margin-left:20px">Текстовое описание модуля</p>

                    <h3>options = {}</h3>
                    <p style="margin-left:20px">Набор (set) опций модуля (объектов класса <a href="#wsoption">WSOption</a>)</p>

                    <h3>result = None</h3>
                    <p style="margin-left:20px">Свойство для хранения объекта класса <a href="#wsresult">WSResult</a>.
                    Устанавливается в модуле-наследнике</p>

                    <h3>loadModule(self, modulename)</h3>
                    <p style="margin-left:20px">Принимает имя модуля, возвращая его объект.</p>
                </p>

                <h2>Методы</h2>
                <p>
                    <h3>__init__(self, kernel)</h3>
                    <p style="margin-left:20px">Метод инициализации класса. Принимает в качестве параметра объект <a href="#wskernel">WSKernel</a></p>

                    <h3>run(self)</h3>
                    <p style="margin-left:20px">Метод запуска модуля. Должен быть переобъявлен в классе-наследнике и содержать соответствующую логику.</p>

                    <h3>help(self)</h3>
                    <p style="margin-left:20px">Метод вывода справки модуля. Должен быть переобъявлен в классе-наследнике.</p>

                    <h3>finished(self)</h3>
                    <p style="margin-left:20px">Метод должен возвратить True когда модуль закончит работу. Должен быть переобъявлен в классе-наследнике.</p>

                    <h3>getResult(self)</h3>
                    <p style="margin-left:20px">Метод записывает результат работы модуля (result.as_string()) в файл из свойства log_path.
                    Возвращает строку "Writed in {self.log_path}". Может быть переобъявлен в модуле-наследнике.</p>
                </p>
            </p>
            </div>

            <h1>WSResult</h1>
            <div id="wsresult" style="margin-left:20px">

                <p>
                    Класс для хранения результатов работы модулей.
                    <h2>Свойства</h2>
                    <p>
                        <h3>results = []</h3>
                        <p style="margin-left:20px">Список строк, представляющих из себя резултаты работы модуля. Например, это могут быть
                           найденные доменные имена или директории на целевом сайте.</p>
                    </p>

                    <h2>Методы</h2>
                    <p>
                        <h3>put(self, item)</h3>
                        <p style="margin-left:20px">Помещает строку item в общий список результатов.</p>

                        <h3>get_all(self)</h3>
                        <p style="margin-left:20px">Возвращает список результатов</p>

                        <h3>as_string(self)</h3>
                        <p style="margin-left:20px">Возвращает строку, представляющую из себя содержимое списка результатов соединеннёх символами переноса строк</p>

                        <h3>unique(self)</h3>
                        <p style="margin-left:20px">Удаляет повторы из списка результатов</p>
                    </p>
                </p>
            </div>

            <h1>WSJob</h1>
            <div id="wsjob" style="margin-left:20px">

                <p>
                    Класс очередей. Является наследником queue.Queue. Ни свойств ни методов не имеет.
                </p>
            </div>

            <h1>WSOption</h1>
            <div id="wsoption" style="margin-left:20px">
                <p>
                    Класс единичной опции модуля. Используется при задании параметро.

                    <h2>Свойства</h2>
                    <p>
                        <h3>name</h3>
                        <p style="margin-left:20px">Название опции (для внутрипрограммного использования)</p>
                        <h3>description</h3>
                        <p style="margin-left:20px">Описание опции</p>
                        <h3>value</h3>
                        <p style="margin-left:20px">Значение опции по умолчанию</p>
                        <h3>required</h3>
                        <p style="margin-left:20px">Флаг обязательной установки значения опции. Принимает значения True или False</p>
                        <h3>flags</h3>
                        <p style="margin-left:20px">Список состоящий из двух строк - короткого и длинного имени опции (например ['-t','--time'])</p>
                    </p>

                    <h2>Методы</h2>
                    <p>
                        <h3>__init__(self, name, description, value, required, flags)</h3>
                        <p style="margin-left:20px">Метод инициализации. Принимает в качестве параметров значения для соответствующих свойств</p>
                    </p>
                </p>
            </div>

            <h1>WSThread</h1>
            <div id="wsthread" style="margin-left:20px">
                <p>
                    Класс потоков для использования внутри модулей WR2. Является наследником
                    threading.Thread.

                    <h2>Свойства</h2>
                    <p>
                        <h3>running = True</h3>
                        <p style="margin-left:20px">Свойство представляет из себя индикатор рабочего состония потока. Проверяется ядром (WSKernel)
                        в ожидании окончания работы модуля </p>
                        <h3>result</h3>
                        <p style="margin-left:20px">Объект результата работы (WSResult)</p>
                        <h3>job</h3>
                        <p style="margin-left:20px">Объект очереди для работы (WSJob)</p>
                    </p>

                    <h2>Методы</h2>
                    <p>
                        <h3>__init__(self, job, result)</h3>
                        <p style="margin-left:20px">Метод инициализации. Принимает объекты очереди и результата, и помещает их в соответствующие свойства.</p>
                    </p>
                </p>
            </div>

        </div>
	</body>
</html>
